package logic

import (
	"bluebell_qimi/dao/redis"
	"bluebell_qimi/models"
	"go.uber.org/zap"
	"strconv"
)

//本项目使用简化版的投票函数
//投一票就加432分    86400/200张赞成票就可以给帖子续一天

/*投票的几种情况：
1. direction=1时，有两种情况：
	1. 之前没有投过票，现在改投赞成票  --->更新分数和投票情况
	2. 之前投反对票，现在投赞成票  --->更新分数和投票情况
2. direction=0时，有两种情况：
	1. 之前投过赞成票，现在取消投票  --->更新分数和投票情况
	2. 之前投过反对票，现在取消投票  --->更新分数和投票情况
3. direction=-1时，有两种情况：
	1. 之前按没有投过票，现在投反对票  --->更新分数和投票情况
	2. 之前投赞成票，现在改投反对票  --->更新分数和投票情况
*/

//投票限制：
//每个帖子自发表之日起一个星期之内允许用户投票，超过一个星期就不允许再投票了
//1. 到期之后将redis中保存的赞成票数及反对票数存储到mysql表中
//2. 到期之后删除那个KeyPostVotedZsetPF

// 为帖子投票
func VoteForPost(userID int64, p *models.ParamVoteData) error {
	zap.L().Debug("VoteForPost",
		zap.Int64("userID", userID),
		zap.String("postID", p.PostID),
		zap.Int8("direction", p.Direction))
	return redis.VoteForPost(strconv.Itoa(int(userID)), p.PostID, float64(p.Direction))
}
